#include<iostream>
#include<signal.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
using namespace std;

// void catchSig(int signum)//signum 捕捉到的信号编号
// {
//     cout<<"进程捕捉到了一个信号，正在处理中： "<< signum <<" pid: "<< getpid() <<endl;
// }
// static void Usage(string proc)
// {
//     cout<< "Usage:\r\n\t"<<proc<<"signumber processid"<<endl;
// }

int main(int argc,char *argv[])
{   

    




    

    // cout<<"我开始运行了"<<endl;
    // sleep(1);
    // raise(8);

    // if(argc != 3)
    // {
    //     Usage(argv[0]);
    //     exit(1);
    // }

    // int signumber = atoi(argv[1]);
    // int procid = atoi(argv[2]);
    // kill(procid,signumber);


    //signal(SIGINT,catchSig);//捕捉2号信号，采取catchSig处理方法
    //特定的信号的处理动作，一般只有一个
    //signal函数仅仅是修改进程对特定信号的后续处理动作，不是直接调用对应的处理动作
    //如果后续没有任何SIGNINIT信号参生，catching会不会调用？永远不会被调用

    //signal(SIGQUIT,catchSig);


    // while (true)
    // {
    //     cout<<"我是一个进程，我正在运行...,pid : "<<getpid()<<endl;
    //     sleep(1); 

    //     int a = 100;
    //     a /=0;

    //     cout<< "run here ..."<<endl;
    // }

    // pid_t id = fork();
    // if(id == 0)
    // {
    //     int a = 100;
    //     a /= 0;
    //     exit(0);
    // }

    // int status = 0;
    // waitpid(id,&status,0);
    // cout<<"父进程： "<<getpid()<<"子进程："<<id<<"exit sig: "<<(status & 0x7fD)<<" is core: "<<((status >> 7) &1)<<endl;


    
    return 0;
}